﻿using System;
using System.Collections.Generic;
using System.ComponentModel;

[Configuable]
public class SkillConfig
{
    [Description("技能ID")]
    public int id;

    [Description("资源文件名")]
    public string assetName;

    [Description("技能触发轴")]
    public string axisName;

    [Description("技能类型")]
    public SkillType skillType;

    [Description("生效状态")]
    public SkillEffectiveState effectiveStates;

    [Description("目标类型")]
    public SkillTargetType targetType;

    [Description("最大等级")]
    public int maxLevel;

    [Description("固定参数")]
    public List<double> fixedParameters;

    [Description("可升级参数，根据技能等级而改变")]
    public List<List<double>> upgradableParameters;
}

public enum SkillType
{
    Default,
    /// <summary>
    /// 被动技能
    /// </summary>
    Passive,
    /// <summary>
    /// 主动技能
    /// </summary>
    Active,
    /// <summary>
    /// 按压技能
    /// </summary>
    Pressing
}

[Flags]
public enum SkillEffectiveState
{
    /// <summary>
    /// 无
    /// </summary>
    None = 0,
    /// <summary>
    /// 所有
    /// </summary>
    All = ~0,
    /// <summary>
    /// 地面
    /// </summary>
    Standing = 1 << 0,
    /// <summary>
    /// 滞空
    /// </summary>
    Airborne = 1 << 1,
    /// <summary>
    /// 攀爬
    /// </summary>
    Climbing = 1 << 2,
    /// <summary>
    /// 下蹲
    /// </summary>
    Squatting = 1 << 3,
}

[Flags]
public enum SkillTargetType
{
    /// <summary>
    /// 无
    /// </summary>
    None = 0,
    /// <summary>
    /// 全体
    /// </summary>
    All = ~0,
    /// <summary>
    /// 自己
    /// </summary>
    Self = 1 << 0,
    /// <summary>
    /// 敌人
    /// </summary>
    Enemy = 1 << 1,
}